﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entidades.Eventos
{
    public class EveReservaDAL
    {
        public static List<EveReserva> listar(Entities context, EveFiltroReserva eveFiltroEvento)
        {
          return context.Eve_Reserva.Where(r => 
          (r.Gen_Cliente.nombre.ToUpper().Contains(eveFiltroEvento.Cliente.ToUpper()) || eveFiltroEvento.Cliente.Length == 0 )
          && r.Gen_Cliente.NroDocumento.Contains(eveFiltroEvento.NumeroDocumento)
          && (
          (r.totalMonto == eveFiltroEvento.MontoReserva && 1 == eveFiltroEvento.TipoMontoReserva)
          || (r.totalMonto > eveFiltroEvento.MontoReserva && 2 == eveFiltroEvento.TipoMontoReserva)
          || (r.totalMonto < eveFiltroEvento.MontoReserva && 3 == eveFiltroEvento.TipoMontoReserva)
          ) 
          && (r.estado == eveFiltroEvento.Estado)
          && ((r.Gen_Cliente.tipoDocumento == eveFiltroEvento.TipoDocumento) || eveFiltroEvento.TipoDocumento == "0")
          && (r.Eve_Evento.nombre.Contains(eveFiltroEvento.NombreEvento))
          && (r.fechaRealizacion >= eveFiltroEvento.FechaRealizacionInicio)
          && (r.fechaRealizacion <= eveFiltroEvento.FechaRealizacionFin)
          ).OrderBy(r => r.Gen_Cliente.nombre).ToList();

          //  return context.Eve_Reserva .ToList();
        }

        public static List<EveReserva> listar(Entities context)
        {
            return context.Eve_Reserva.ToList();
        }

        public static List<EveReserva> listarReserva(Entities context, EveFiltroReserva eveFiltroEvento)
        {
            return context.Eve_Reserva.Where(r =>
            (r.Gen_Cliente.NroDocumento.Contains(eveFiltroEvento.NumeroDocumento))
            && ((r.Gen_Cliente.tipoDocumento == eveFiltroEvento.TipoDocumento) || eveFiltroEvento.TipoDocumento == "0")
            && ((r.fechaRealizacion == eveFiltroEvento.FechaRealizacion) || (eveFiltroEvento.FechaRealizacion.Year == 1))
            ).OrderBy(r => r.Gen_Cliente.nombre).ToList();   
        }

        public static void guardar(Entities context, EveReserva eveReserva)
        {
            context.Eve_Reserva.AddObject(eveReserva);
            context.SaveChanges();
        }

        public static EveReserva buscar(Entities context, int idReserva)
        {
            return context.Eve_Reserva.Where(e => e.idReserva == idReserva).FirstOrDefault();
        }

     
    }
}
